|
|
Mac OS Release / USB Version Matrix |
||
For Power Macintosh systems with USB Built-in (iMacs, iBooks, B&W G3's, G4's, PB G3 Series (Bronze Kbd & Firewire) - For all of these systems, USB can only be updated using a System Software upgrade; USB cannot be upgraded standalone for these CPU's. The Power Mac System listing below shows which systems shipped with each release of System Software and corresponding release of USB. |
||
Mac OS |
Power Mac Systems |
USB Version |
Mac OS 8.1 |
iMac 233 |
USB 1.0.1, (USB 1.0 advise users to Install the iMac Update 1.0) |
Mac OS 8.5 |
iMac 233 |
USB 1.0.1 |
Mac OS 8.5.1 |
iMac 266, B&W G3 |
USB 1.1 |
Mac OS 8.6 |
iMac 266, B/W G3 |
USB 1.2 |
Mac OS 8.6 |
PB G3 Series (bronze kbd) |
USB 1.2.2 |
Mac OS 8.6 |
iBook, iMac DV/SE, G4 |
USB 1.3.2, 1.3.3, 1.3.4 |
Mac OS 9.0 |
iBook, iMac DV/SE, G4 |
USB 1.3.5 |
Mac OS 9.0 |
iBook, iMac DV/SE, G4 |
USB 1.3.6 |
Mac OS 9.0.2 |
iBook/SE, G4, PB (Firewire) |
USB 1.4 |
Mac OS 9.0.4 |
USB 1.4.1 (1.4.2) |
|
Mac OS 9.0.4 |
iMac Summer 2000 |
USB 1.4.3 |
Mac OS 9.0.4 |
G4 MP (and non-MP system) |
USB 1.4.4 |
Mac OS 9.0.4 |
G4 Cube |
USB 1.4.5 |
For Power Macintosh systems without USB Built-in support, but with USB PCI Card installed, USB is installed as a standalone installer. There is no absolute correlation between Mac OS release and the version of USB which is present. |
||
Mac OS 8.1 |
USB 1.0.1, USB 1.1 installed by USB PCI Card Licensees |
|
Mac OS 8.5 |
USB 1.0.1, USB 1.1 installed by USB PCI Card
Licensees |
|
Mac OS 8.5.1 |
USB 1.1 installed by USB PCI Card Licensees |
|
Mac OS 8.6 |
USB 1.1 installed by USB PCI Card Licensees |
|
Mac OS 9.0 |
USB 1.2, USB 1.3.5 installed via USB Adapter Card Support |
|
For PowerBook G3 Series without USB Built-in support, but with USB Cardbus Card inserted |
||
Mac OS 8.6 |
PowerBook G3 Series |
USB 1.3.5 installed via USB Adapter Card Support |
Mac OS 9.0 |
PowerBook G3 Series |
USB 1.3.5 installed via USB Adapter Card Support |
Mac OS USB v1.0 was built into the Mac OS ROM file, v1.1, which shipped with Mac OS v8.1 on original iMac. This release provided support for USB Hubs, and Human Input Devices (HID) which conform to the keyboard and mouse protocols. Drivers compiled with the Mac OS USB DDK 1.0, may still function with the later releases of USB, however, developers are advised to obtain more recent versions of the DDK and rebuild their products.
Mac OS USB v1.0.1 was built into the Mac OS ROM file, v1.1.2, file which shipped as part of the iMac Update v1.0. The iMac Update worked on iMacs with Mac OS v8.1 present. This version of USB was also part of the Mac OS v8.5 release. USB v1.0.1 improved the reliability of the USBBulkRead/Write calls most notably demonstrated in the improved reliability of USB printers.
API Additions from v1.0
Mac OS USB v1.1 was built into the Mac OS ROM file, v1.2.1, file which shipped as part of the Mac OS SSW v8.5.1 software update. For the Blue and White Power Macintosh G3, the Mac OS ROM file, v1.2, included this release of USB, as part of the default SSW v8.5.1 installation. USB v1.1 provided API's for USBIsocRead/Write calls. The Isochronous functionality was disabled for this release of USB.
This version of Mac OS USB was licensed to several vendors for inclusion with their USB PCI Adapter card product. In this case, Mac OS USB v1.1 may be found on systems using 8.5+
API changes from v1.0.1.
API Additions from v1.0.1
Mac OS USB v1.2 was built into the Mac OS ROM file, v1.4, which shipped as part of the Mac OS SSW v8.6 software update. This Mac OS ROM file supported both iMacs and Blue and White Power Macintosh G3s. This release has also been made available for installation to Power Macintosh 8.5+ systems which have PCI support but do not have USB built-in, using the USB Adapter Card Support Installer. USB v1.2 provided Isochronous support and support for multiple USB driver modules in one file. The individual driver modules of previous releases were merged into the USB Device Extension file.
API Changes from v1.1.
API Additions from v1.1
Mac OS USB v1.2.2 was built into the Mac OS ROM file, v1.6, file which shipped as part of the Mac OS SSW v8.6 software release for the 99 PowerBook G3 Series and for the 33MHz iMac. This release was also built into the Mac OS ROM file, v1.7.1 for Mac OS SSW v8.6 for the Power Macintosh G4, 400MHz system with PCI Graphics. This release of USB is available as part of the Mac OS ROM Update v1.0. To access this update use the following URL.
http://asu.info.apple.com/swupdates.nsf/artnum/n11476
Mac OS USB v1.3.3 was built into the Mac OS ROM file, v2.3.1, which is a part of the iBook Mac OS SSW 8.6. This release of Mac OS USB is also built into the Mac OS SSW 8.6 for the Power Macintosh G4 systems with AGP Graphics and into the iMac 350/400MHz systems. Mac OS USB v1.3.3 incorporates the following class driver support for the following devices.
Mac OS USB v1.3.3 provides support for the Software Locator, USB Suspend and Resume wakeup support. It also provides support for transaction and no-data timeouts, and for Cardbus USB cards on the PowerBook G3 Series systems with Mac OS 8.6 or greater present.
API Changes from v1.2.
API Additions from v1.2
Mac OS USB v1.3.5 was built into the Mac OS ROM file, v3.0 for Mac OS 9.0. This release addresses some last minute bugs which were identified with Mac OS USB 1.3.3. The Mac OS 9.0 Installer will automatically support any Power Macintosh systems that ship with USB built-in. For all other Power Macintosh systems where a USB PCI or Cardbus card must be used, a separate standalone installer is required to update Mac OS USB to 1.3.5. This Installer is available on the Apple Software Update web site.
Mac OS USB v1.4 was built into the Mac OS ROM file, 3.5, for Mac OS 9.0.2. Mac OS USB v1.4 incorporates the following changes
API Additions from v1.3.5
Use the latest released version of the Mac OS USB Driver Development Kit (DDK) for developing your USB software products. If you software is dependent on specific functionality or uses new API calls as listed above, then you want to
There are two places to check for the presence of the correct Mac OS USB version, if your driver or process is dependent on a minimum version being present. First check for the correct version in your Installer application. If the correct version is not present, you can raise an alert to the user to obtain the correct USB version. Second, you must check for the correct version within the process itself. There are two ways to check for the version of Mac OS USB is present.
Traditionally, the Gestalt function has been used to check for the version of USB present. Doing this means that one must link the code to the InterfaceLib stub, which driver code should not have to do. For Mac OS USB v1.3, there is the GetUSBVersion call. The following code demonstrates how to use this call under all versions of USB without having to link to InterfaceLib. Note that MyUSBGetVersion only returns a version value if Mac OS USB v1.3 or greater is present. Remember to weak link to the USBServicesLib file, else the driver will fail to load.
#include <USB.h> // ensure that you include the USB.h v1.3 header file UInt32 MyUSBGetVersion(void) { UInt32 version; if ((Ptr) USBGetVersion != (Ptr) kUnresolvedCFragSymbolAddress) version = USBGetVersion(); else version = 0; // version of USB is less than 1.3 return version; }
To check whether isochronous support is present, you can use the MyUSBGetVersion function to check for the presence of USB v1.3, or you can also use Gestalt with the gestaltUSBAttr selector and check for the gestaltUSBHasIsoch bit being set in the response.